const { app, BrowserWindow, Menu, Tray } = require('electron');
const { spawn } = require('child_process');
const path = require('path');

let tray = null;
let mainWindow = null;

let batchChild = null; // 保存子进程实例

// 执行批处理脚本
const runBatchScript = () => {
    batchChild = spawn("F:\\myjobs\\python311\\Scripts\\open-webui.exe", ['serve'], {
        detached: true,
        // stdio: ['ignore', 'pipe', 'pipe'],
        // cwd: "../",
        windowsHide: true
    });
    // let isStartSuccess = false;


    setTimeout(() => {
        mainWindow.loadURL('http://localhost:8080');
    }, 5000);

    // // 监听子进程标准输出
    // batchChild.stdout.on('data', (data) => {
    //     let output = data.toString().toLowerCase();
    //     // output = iconv.decode(output, 'utf8');

    //     // 假设脚本成功时会输出"启动成功"相关内容，根据实际脚本输出调整判断条件
    //     if (output.includes('open_webui.utils.logger:start_logger')) {
    //         isStartSuccess = true;

    //         mainWindow.loadURL('http://localhost:8080');
    //     }
    // });

    // // 监听子进程错误输出
    // batchChild.stderr.on('data', (data) => {
    //     // output = iconv.decode(data.toString(), 'utf8');
    //     console.error('pichuli error:', data);
    // });

    // 子进程关闭时检查是否成功
    // batchChild.on('close', (code) => {
    //     if (!isStartSuccess && code !== 0) {
    //         app.quit();
    //     }
    // });
};

runBatchScript();


const createWindow = () => {
    mainWindow = new BrowserWindow({
        width: 1200,
        height: 800,
        icon: path.join(__dirname, './assets/icon.png')
    });

    Menu.setApplicationMenu(null);
    mainWindow.loadFile("./loading.html")

    // // 监听窗口关闭事件
    // mainWindow.on('close', (e) => {
    //     // 阻止默认的关闭行为
    //     e.preventDefault();
    //     // 隐藏窗口
    //     mainWindow.hide();
    // });
};

app.whenReady().then(() => {
    createWindow();

    // 创建系统托盘图标
    tray = new Tray('./assets/icon.png');
    const contextMenu = Menu.buildFromTemplate([
        {
            label: '显示窗口', click: () => {
                if (mainWindow) {
                    mainWindow.show();
                }
            }
        },
        {
            label: '退出应用', click: () => {
                // 强制退出应用
                app.quit();
            }
        }
    ]);
    tray.setToolTip('这是你的应用');
    tray.setContextMenu(contextMenu);

    // 点击系统托盘图标显示窗口
    tray.on('click', () => {
        if (mainWindow) {
            mainWindow.show();
        }
    });

    app.on('activate', () => {
        if (BrowserWindow.getAllWindows().length === 0) {
            createWindow();
        }
    });

    // 监听应用退出事件，杀死子进程
    app.on('before-quit', () => {
        if (batchChild) {
            batchChild.kill();
        }
    });
});

app.on('window-all-closed', () => {
    // 这里不再退出应用，因为我们已经处理了关闭窗口的逻辑
    // if (process.platform !== 'darwin') {
    //     app.quit();
    // }
});